home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 1
/
Cream of the Crop 1.iso
/
UTILITY
/
CRYPTE11.ARJ
/
CRYPTE.DOC
next >
Wrap
Text File
|
1992-05-20
|
14KB
|
272 lines
CRYPTE.DOC
Documentation file for CRYPTE.EXE, RANDKEY.EXE, and FASTKEY.EXE.
WHAT IS CRYPTE?
CRYPTE is a file encryption utility designed to protect the privacy of your
files. It uses a key file that can vary in length from 4 bytes to the length
of the file to be encrypted. Key files may be longer, but bytes beyond the
length of the file to be encrypted are not used.
LEGAL STUFF
Article the sixth... The right of the people to be secure in their persons,
houses, papers, and effects, against unreasonable searches and seizures, shall
not be violated, and no Warrants shall issue, but upon probable cause,
supported by oath or affirmation, and particularly describing the place to be
searched, and the persons or things to be seized.
Encryption and privacy software is subject to United States of America export
control laws and the International Traffic in Arms Regulations. It is the
responsibility of the user to ensure compliance with these laws.
CRYPTE, RANDKEY, FASTKEY, and this file are copyright (C) 1988 and 1992
Michael Paul Johnson. All rights reserved. Permission is granted for these
files to be distributed freely to any destination within the USA for trial use
purposes. It is the responsibility of the user to determine the suitability
of this program for his/her intended use. No liability of any sort will be
assumed by the author for any damages or loss of data resulting from the use
of this program. This program is intended to protect the privacy of data while
stored or transmitted. Its used for any illegal activity is NOT condoned by
the author. It is recommended that you try this program out on noncritical
data before you use it on anything important to make sure that you understand
how it works. While I believe that this program is reliable, if you find any
bugs, please let me know so that I can correct them.
If you use this program regularly, then you are required to register it by
sending $20.00 and the name of this program to the author at PO BOX 1151,
LONGMONT CO 80502-1151. Support for registered users is available on the
Rainbow Missions BBS at 303-938-9654, and by mail.
HOW DOES CRYPTE COMPARE WITH OTHER ENCRYPTION PROGRAMS?
CRYPTE is one of several encryption programs written by Mike Johnson. The
major versions and their characteristics follow.
CRYPTA is designed for security against the average hacker who has limited
time for cryptanalysis. It uses a password from the command line of variable
length. Partially correct passwords may result in partially correct
decryptions. It encrypts and decrypts files in place.
CRYPTE uses a more secure algorithm than CRYPTA, but is much less tolerant of
errors. A one bit error in the key or the encrypted file is likely to cause a
very drastic error of up to 16384 bytes in length when the file is decrypted.
Therefore, when transmitting an encrypted file by modem, always be sure to use
a binary file transfer protocol (like xmodem or kermit). It can encrypt a
directory and all of its subdirectories. It allows you the option of hiding
encrypted files or not. It is less picky about the command line syntax, in
that the switches are not required to appear in any particular order. CRYPTE
does not have to create a temporary file to decrypt, like CRYPTD, and
therefore can operate with less free disk space.
CRYPTO is based on DES in block chaining with ciphertext feedback mode. The
initialization vector is fixed.
CRYPTDES is an upgrade of CRYPTO that uses a different initialization vector.
CRYPTMPJ is based on the MPJ encryption algorithm. This algorithm is more
secure than DES, and its security is not reduced by publishing the algorithm.
WHICH OF THE ABOVE ALGORITHMS ARE THE BEST?
For maximum security with a relatively short key (16 bytes), or if you want to
know how the program works, use CRYPTMPJ. For higher speed and security that
depends on the length of the key used, use CRYPTE.
HOW DO I SELECT A KEY FILE?
The key file used by CRYPTE is any binary file of any length from 32 bytes to
32 megabytes. Key files of up to 16384 bytes long will result in faster
encryption and decryption than longer key files because the entire key is
kept in memory. When you encrypt a file, a maximum of one key byte from the
key file + 8192 bytes is used per byte of data. The whole file is used in
creating the modified checksum that is used in determining if this file might
have been the encrypting file when you go to decrypt it. Any kind of file can
be used for a key file: an .EXE or .COM file, a text file, or a random binary
file. CRYPTE is most secure when used with a random binary key file, but
CRYPTE is reasonably secure for most applications even with a key that can be
a short text file that you can memorize. If you try this approach, be sure
that you use the exact same characters, including spaces, carriage returns,
line feeds, and even the presence or absence of a control Z at the end. In
other words, if you try a memorized key, create it EXACTLY the same as the way
you did when you encrypted the file. CRYPTE can also use any other file (for
example, a .COM file) for a key. The maximum security that is attainable
with CRYPTE is to create a random key file. This can be done best by using
RANDKEY, FASTKEY, or by using another encryption algorithm (such as DES or
MPJ) as a random number generator.
HOW DOES RANDKEY WORK?
RANDKEY generates a random sequence by using the NBS DES as a pseudorandom
number generator, started with seeds that depend in a complex manner on your
system clock, the Turbo Pascal 5.0 random number generator, and on the
characters you type on the keyboard. Each time you type a key, both the key
you type and the time that you typed it are used to change the pseudorandom
sequence. This program will run without operator input, but it is the
operator input that makes the difference between random and pseudorandom.
Even if someone could guess the exact time (to a 100th of a second) on your
system real time clock that you ran RANDKEY and run the program at the same
clock speed as your computer, with a disk with the same access time, there is
no way to compute what keys you pressed at what time to generate the key.
RANDKEY requires two inputs besides the random keys that you type: the file
name of the key you are generating, and the size of the file in bytes. These
can either be entered on the command line or, if they are not on the command
line (file name first), then the program will prompt you for these inputs.
HOW DOES FASTKEY WORK?
Just like RANDKEY, except that it uses the Turbo Pascal 5.0 random number
generator instead of the NBS DES algorithm. This makes it faster, but a bit
more dependent on the operator for good random key stroke (both in timing and
in the keys pressed) input.
HOW DOES CRYPTE WORK?
CRYPTE is designed to work from the command line so that it is easy to put in
batch files. The syntax is:
CRYPTE [/E|/D] [/S] [/V] keyfile file(s) [other files]
The /E or /D is used to determine if you desire to encrypt or decrypt. If you
don't specify either, then decryption is performed. If you specify both, the
last one counts. /S, if present, means that you would like all subdirectories
under the ones specified in the list of files scanned and processed. /V means
that you want visible files left visible after encryption. This is useful if
you are encrypting a file for transmission by modem. Any of the above
switches (/E, /D, /S, and /V) may appear in any order, and they may appear
before or after the file names. Switches may optionally be preceded with a -
for you UNIX fans. They are not case sensitive. In other words, -S, /S, -s,
and /s all mean the same thing. There must be a space between all switches
and file names on the command line. The first file name listed is the key
file, and may include a drive and path name, like A:\SECRET\KEY.BIN or
A:KEY.ONE. The keyfile must be the same for encryption and decryption. The
files to encrypt or decrypt may include the DOS wild card characters * and ?.
There may be multiple file specifications listed to encrypt or decrypt. File
specifications may include drive and path names. Several different file
specifications may be listed on the same command line.
The encrypted file will be 9 bytes longer than the plain file. This is
because of the modified CRC of the key file and the attribute and date/time
stamp of the original file. The file is encrypted in place, so that after
encryption, all of Norton's and Maces utilities cannot retrieve the plain file
without the key (unless there are other erased copies of it hanging around on
your hard disk -- these can be overwritten with my KILL (for files that
haven't been erased yet), ZAP (for erased files), or Norton's WIPEFILE
utilities. The encrypted file will have the hidden and read only bits set in
their directory entries unless you specified the /V switch on the command
line. These make the files a bit less obvious, but not difficult to find by
any hacker with a good collection of public domain utilities or Norton's good
work. Of course, even a good hacker won't be able to read the files without
your key. Therefore, it is a good idea to keep the key file on a floppy disk
(or better yet, two copies of the key file on two disks) that you lock up. It
is also a good idea to keep backups of your hard disk current in case disaster
(natural, unintentional, or intentional) strikes your hard disk.
When decrypting files, make sure that there is enough room on the default
drive (where you run CRYPTD from) to make a temporary file that is as big as
the largest file that you are going to decrypt. If you forget this little
detail and the program halts with an error message that says that it is unable
to open the temporary file, then your encrypted version of the file will still
be intact.
JUST HOW SECURE IS CRYPTE?
CRYPTE is approximately as secure as the one time pad IF:
1. you encrypt every file with a different random key file generated with
RANDKEY (using lots of keyboard input) or another random number generator that
is at least as good, and
2. the each key file is at least as long as the file it is used to encrypt,
rounded up to the next 16384 byte increment, and
3. you use each key file only once, and
4. you keep your key file locked in a secure place, and
5. you overwrite (not just erase) any traces of the unencrypted file and
the key on your fixed hard disk, and
6. you keep your key file on a floppy disk (or other removable
media) that is locked in a secure safe, and
7. you use an unaltered copy of CRYPTE (straight from the author), and
8. your system contains no viruses or RAM resident software that defeats the
encryption process by keeping a copy of the plain text, and
9. you turn your computer off for at least 30 seconds after you do the
encryption to erase any traces of the key and/or plain text that might be left
in RAM, such as in a command line editor command history.
CRYPTE is not really very secure if you let the key be known by anyone that
you do not trust, or if you use a key that can be guessed, or if you use a key
that is short enough to get by trial and error. The key should be at least 16
bytes long, even though CRYPTD will accept shorter keys.
CRYPTE is less secure than CRYPTMPJ when using the same key length (16 bytes),
but it is more secure than CRYPTMPJ when used in its provably secure mode
(following the 9 conditions above).
CRYPTE is "secure enough" for most commercial applications if each key is used
for no more than 100 files, and if the key is approximately as long as the
longest file to be encrypted, OR if the key is only used for one file and the
key is at least 32 bytes or 1% of the file length to be encrypted, whichever
is greater.
CAN AN ENCRYPTED FILE BE RECOVERED WITHOUT THE KEY?
There is no way that I know of to recover an encrypted file without the key
unless (1) the key can be guessed, (2) the key is short enough to find by
brute force, (3) there is another copy of the file that can be recovered
that is not encrypted, or (4) the key can be recovered by attempting to
reproduce the way that the key was generated. If the key was a long key
generated with RANDKEY or FASTKEY with keyboard input being performed by a
one year old child, then the data is gone forever without the key. There is
no "back door" or "master key" to this algorithm.
WHAT IF I GOOF AND DECRYPT THE FILE WITH THE WRONG KEY?
CRYPTE attempts to catch this error and give you an "ACCESS DENIED" message
(and an obnoxious siren on some computers), but it may not. If it doesn't,
then encrypt the file again with the SAME wrong key. Then decrypt the file
with the proper key.
WHAT IF I RUN OUT OF DISK SPACE WHILE ENCRYPTING?
Adding 9 bytes the end of each file may take up more disk space than you might
think, because if the those 9 bytes will not all fit in the last cluster of
the file, a whole new cluster (usually 2048 bytes) will be allocated to that
file by DOS. if there is not room for this on your disk, CRYPTE will restore
the file it was about to encrypt to its original unencrypted state, and halt
with an error message. The files that were encrypted before that point will
be encrypted, but the files that would have been encrypted after that are
still unencrypted.
USING SUPERENCRYPTION TO INCREASE SECURITY
Superencryption is encrypting something more than once with different keys
and/or different algorithms. With CRYPTE, it does more good to increase the
length of the key file than to encrypt more than once with CRYPTE if the
length of the key file is not yet as long as the file to be encrypted. It
also does more good to superencrypt using two or more unrelated algorithms
than to use the same one. For example, a file can be encrypted with CRYPTDES
with key 1, encrypted with CRYPTMPJ with key 2, and then encrypted with CRYPTE
using key 3. To decrypt the superencrypted file, decrypt in reverse order
(CRYPTE & key 3, then CRYPTMPJ & key 2, then CRYPTDES with key 1).